#include "sort.h"

// 排序函数 按成绩排名  插入排序
void Insert_Sort_sql_list_sco(sql_list * list)
{
    if (NULL == list && 0 == list->len)
    {
        ERRLOG("传入顺序表为NULL 或者链表内无数据");
    }
    
    // 声明变量
    int i;
    int j;
    Elenemt_data temp;

    // 开始排序
    for (i = 1; i < list->len; i++)
    {
        if (list->data[i].sco < list->data[i - 1].sco )
        {
            // 将要插入的数据存放到 temp 中
            temp = list->data[i];

            // 遍历 让 大于 temp 的值 往后面挪
            for ( j = i - 1; j >= 0 && temp.sco < list->data[j].sco; j-- )
            {
                list->data[j + 1] = list->data[j];
            }

            // 合适的位置插入
            list->data[j + 1] = temp;
        }
        
    }

}

//冒泡排序
void bubble_sort_sql_list_sco(sql_list * list)
{
    if (NULL == list && 0 == list->len)
    {
        ERRLOG("传入顺序表为NULL 或者链表内无数据");
    }
    int i,j;
    Elenemt_data temp;
    for (i = 0; i < list->len; i++)
    {
        for (j = 0; j < list->len - i - 1; j++)
        {
            if (list->data[j].sco > list->data[j+1].sco)
            {
                temp = list->data[j];
                list->data[j] = list->data[j+1];
                list->data[j+1] = temp;
            }
        }
    }
}

//简单选择排序
void selectsort_sql_list_sco(sql_list * list)
{
    if (NULL == list && 0 == list->len)
    {
        ERRLOG("传入顺序表为NULL 或者链表内无数据");
    }
    int i,j,min;
    Elenemt_data temp;
    for ( i = 0; i < list->len - 1; i++)
    {
        min = i;
        for ( j = i + 1; j < list->len; j++)
        {
            if (list->data[j].sco < list->data[min].sco)
            {
                min = j;
            }
        }
        if (min != i)
        {
            temp = list->data[i];
            list->data[i] = list->data[min];
            list->data[min] = temp;
        }
    }
}